import { createI18n } from 'vue-i18n';
import zhCN from './zh-CN';
import enUS from './en-US';

// 获取系统语言
function getSystemLanguage(): string {
  try {
    const systemInfo = uni.getSystemInfoSync();
    const language = systemInfo.language || 'zh-CN';
    
    // 将系统语言映射到支持的语言
    if (language.startsWith('en')) {
      return 'en-US';
    }
    return 'zh-CN';
  } catch (error) {
    console.warn('Failed to get system language:', error);
    return 'zh-CN';
  }
}

// 获取存储的语言设置
function getStoredLanguage(): string {
  try {
    return uni.getStorageSync('language') || getSystemLanguage();
  } catch (error) {
    console.warn('Failed to get stored language:', error);
    return getSystemLanguage();
  }
}

// 创建 i18n 实例
let i18n: any;

// 设置 i18n
export function setupI18n() {
  i18n = createI18n({
    legacy: true, // 使用 legacy API 模式，更稳定
    locale: getStoredLanguage(),
    fallbackLocale: 'zh-CN',
    messages: {
      'zh-CN': zhCN,
      'en-US': enUS,
    },
  });
  return i18n;
}

// 切换语言
export function setLanguage(language: string): void {
  if (i18n) {
    i18n.global.locale = language;
  }
  try {
    uni.setStorageSync('language', language);
  } catch (error) {
    console.warn('Failed to save language:', error);
  }
}

// 获取当前语言
export function getCurrentLanguage(): string {
  return i18n ? i18n.global.locale : getStoredLanguage();
}

// 获取支持的语言列表
export function getSupportedLanguages(): Array<{ label: string; value: string }> {
  return [
    { label: '中文', value: 'zh-CN' },
    { label: 'English', value: 'en-US' },
  ];
}

export default i18n;